#include<iostream>

using namespace std;


class date
{
public:
date operator+(int  n)
	{
		date ret = (*this);
		ret._day += n;
		while(ret._day > getmonth(ret._month, ret._year))
		{
			ret._day -= getmonth(ret._month, ret._year);
			ret._month++;
			if (ret._month==13)
			{
				ret._year++;
				ret._month = 1;
			}
		}
		return ret;
	}
	date& operator+=(int  n)
	{
		_day += n;
		while (_day > getmonth(_month, _year))
		{
			_day -= getmonth(_month, _year);
			_month++;
			if (_month==13)
			{
				_year++;
				_month = 1;
			}
		}
		return *this;
	}


	bool operator==(const date& d)
	{
		return  _month = d._month && _day == d._day && _year == d._year;
	}
	bool operator>(const date& d)
	{
		if (_year > d._year)
		{
			return true;
		}
		if (_year == d._year && _month > d._month)
		{
			return true;
		}
		if (_year == d._year && _month == d._month && _day > d._day)
		{
			return true;
		}
		return false;
	}
	bool operator>=(const date& d)
	{

		if (_year > d._year)
		{
			return true;
		}
		if (_year == d._year && _month > d._month)
		{
			return true;
		}
		if (_year == d._year && _month == d._month && _day >= d._day)
		{
			return true;
		}
		return false;
	}
	bool operator<(const date& d)
	{

		if (_year < d._year)
		{
			return true;
		}
		if (_year == d._year && _month < d._month)
		{
			return true;
		}
		if (_year == d._year && _month == d._month && _day < d._day)
		{
			return true;
		}
		return false;

	}
	bool operator<=(const date& d)
	{
		if (_year < d._year)
		{
			return true;
		}
		if (_year == d._year && _month < d._month)
		{
			return true;
		}
		if (_year == d._year && _month == d._month && _day <= d._day)
		{
			return true;
		}
		return false;
	}



	int getmonth(int month,int year)
	{
		int months[13] = { 0,31,28,31,30,31,30,31,30,30,31,30,31 };
		if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))
		{
			return 29;
		}
		return months[month];
	}
	date(int year = 0, int month = 1, int day = 1)
	{
		if (year >= 0 && month > 0 && day > +0 && month <= 12 && day <= getmonth(month, year))
		{
	    _year = year;
		_month = month;
		_day = day;
		}
		else
		{
			cout << "ڷǷ" << endl;
		}
	}
	date(const date& d)
	{
		_year = d._year;
		_month = d._month;
		_day = d._day; 
	}
	
	





private:
	int _year;
	int _month;
	int _day;
};


int main()
{
	date d1(2006, 4, 30);
	date d2 = d1;
}